//
//    Програма находжения резулитата деления одного числа на другое,
//    результат деления может быть как обычным вещественным числом,
//    так и содержать периодически повторяемую послевовательность цифр
////

public class Division {

    // Функция вычисления количества цифр в числе
    public static int digitsCount(int number) {
        int res = 0;
        while (number > 0) {
            res++;
            number /= 10;
        }
        return res;
    }

    // Получение цифры числа по индексу
    public static int getDigit(int number, int digitPos) {
        if (digitPos < 0)
            return 0;

        int base10 = 1;
        while (digitPos > 0) {
            base10 *= 10;
            digitPos--;
        }
        return (number / base10) % 10;
    }

    // Точка входа в програму
    public static void main(String[] args) {

        // Входные данные
        int divident = 1110;
        int divisor = 7;

        int maxDigit = digitsCount(divident) - 1;
        int reminder = 0;

        // Считаем в столбик целую часть числа
        int result = 0;
        while (maxDigit >= 0) {
            reminder = reminder * 10 + getDigit(divident, maxDigit);

            int divRes = reminder / divisor;
            int modRes = reminder % divisor;

            result = result * 10 + divRes;
            //System.out.println(reminder);
            reminder = modRes;

            maxDigit--;
        }

        // Считаем в столбик вещественную часть числа (до 9 знаков после точки)
        int realPart = 0;
        int[] listOfReminders = new int[9];
        int[] listOfDigits = new int[9];
        int listCount = 0;
        while (maxDigit >= -9) {
            reminder = reminder * 10 + getDigit(divident, maxDigit);

            int divRes = reminder / divisor;
            int modRes = reminder % divisor;

            realPart = realPart * 10 + divRes;

            // Сохраняем остаток и цифру результата в список
            listOfReminders[listCount] = reminder;
            listOfDigits[listCount] = divRes;
            listCount++;
            //System.out.println(reminder + " : " + divRes);

            reminder = modRes;

            maxDigit--;
        }

        // Ищем начало и конец периода
        int periodStartPos = -1;
        int periodEndPos = -1;
        loops: {
            for (int i = 0; i < listCount; i++) {
                if (listOfReminders[i] == 0)
                    break loops;
                for (int j = i + 1; j < listCount; j++) {
                    if (listOfReminders[i] == listOfReminders[j]) {
                        periodStartPos = i;
                        periodEndPos = j - 1;
                        break loops;
                    }
                }
            }
        }

        if (periodStartPos == -1) {

            // Выводим результат без периода

            System.out.println(divident + " / " + divisor + " = " + result + "." + realPart);
        }
        else {

            // Выводим результат с периодом в скобках

            System.out.print(divident + " / " + divisor + " = " + result + ".");
            for (int i = 0; i < periodStartPos; i++)
                System.out.print(listOfDigits[i]);

            System.out.print('(');
            for (int i = periodStartPos; i <= periodEndPos; i++)
                System.out.print(listOfDigits[i]);
            System.out.println(')');
        }
    }
}
